list-[id].vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template>
  2. <div id="newsList">
  3. <div class="topBg">
  4. <!-- 页面头部 -->
  5. <HomePageHead></HomePageHead>
  6. <!-- 页面导航 -->
  7. <HomePageNavigation></HomePageNavigation>
  8. </div>
  9. <!-- 面包屑导航 -->
  10. <div class="breadcrumb">
  11. <div class="inner">
  12. <span class="location">当前位置:</span>
  13. <el-breadcrumb :separator-icon="ArrowRight">
  14. <el-breadcrumb-item>
  15. <NuxtLink to="/">首页</NuxtLink>
  16. </el-breadcrumb-item>
  17. <el-breadcrumb-item v-if="parent_name != ''">
  18. <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
  19. </el-breadcrumb-item>
  20. <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
  21. </el-breadcrumb>
  22. </div>
  23. </div>
  24. <!-- 资讯列表 -->
  25. <div class="newsList">
  26. <div class="inner">
  27. <div class="innerLeft">
  28. <ul class="list">
  29. <li v-for="(item, index) in newsList" :key="index">
  30. <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
  31. <!-- <div class="hasImg" v-if="item.imgurl != ''">
  32. <div class="itemImg">
  33. <img :src="item.imgurl" alt="">
  34. </div>
  35. <div class="itemText">
  36. <h5 class="title">{{ item.title }}</h5>
  37. <p class="content">{{ item.introduce }}</p>
  38. </div>
  39. </div> -->
  40. <div class="notHasImg" >
  41. <h5 class="title">{{ item.title }}</h5>
  42. <p class="content">{{ item.introduce }}</p>
  43. </div>
  44. </NuxtLink>
  45. </li>
  46. </ul>
  47. <!-- 分页器 -->
  48. <div class="pagination pagination_phone_none" v-if="total > 0">
  49. <el-pagination size="small" background layout="total, prev, pager, next" :total="total"
  50. class="mt-4" :page-size="pageSize" :current-page="pageNum" prev-text="上一页" next-text="下一页"
  51. @current-change="changePage" />
  52. </div>
  53. <div class="pagination pagination_pc_none" v-if="total > 0">
  54. <el-pagination pager-count="5" size="small" background layout="pager" :total="total"
  55. class="mt-4" :page-size="pageSize" :current-page="pageNum" @current-change="changePage" />
  56. </div>
  57. </div>
  58. <div class="innerRight">
  59. <DetailHotNews></DetailHotNews>
  60. <!-- <DetailHotNews2></DetailHotNews2> -->
  61. </div>
  62. </div>
  63. </div>
  64. <!-- 页面底部 -->
  65. <HomeFoot></HomeFoot>
  66. </div>
  67. </template>
  68. <script setup>
  69. //1.页面必备依赖 start ---------------------------------------->
  70. import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
  71. import { ArrowRight } from '@element-plus/icons-vue'
  72. import { ref, onMounted } from 'vue';
  73. //当前列表名称
  74. const name = ref('')
  75. const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
  76. //格式化跳转路径
  77. const getLinkPathDetail = (item) => {
  78. if (item.islink == 1) {
  79. return `${item.linkurl}`;
  80. } else {
  81. //return `/${item.aLIas_pinyin}/${item.id}`;
  82. //return `/newsDetail/${item.id}`
  83. return `/${item.pinyin}/${item.id}.html`;
  84. }
  85. }
  86. //1.页面必备依赖 end ---------------------------------------->
  87. //1.获得路由id start ---------------------------------------->
  88. const route = useRoute();
  89. let articleId = 0;//路由id
  90. let pageNum = ref(2);
  91. let total = ref(1);
  92. let pageSize = ref(10);
  93. //获得当前的完整路径
  94. const fullPath = route.path;
  95. //拆分,取出来中间这一段,然后提取数字部分
  96. const segments = fullPath.split('/');
  97. const targetSegment = segments[1];
  98. //const numberPart = targetSegment.match(/\d+$/)?.[0];
  99. //let routeId = 20 //排除路径错误可以打开这个
  100. //通过导航路径反向查询导航id
  101. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  102. method: 'GET',
  103. query: {
  104. 'pinyin': targetSegment,
  105. },
  106. });
  107. if (getRouteId.code == 200) {
  108. articleId = getRouteId.data.category_id
  109. } else {
  110. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  111. console.log("错误位置:通过url路径查询导航池id")
  112. console.log("后端错误反馈:", getRouteId.message)
  113. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  114. }
  115. //获得html前的数字
  116. // const pageUrl = segments[2];
  117. // const pageNumber = pageUrl.split('.')[0];
  118. // console.log("当前URL中的页码:")
  119. // console.log(pageNumber)//2
  120. // pageNum.value = parseInt(pageNumber);
  121. pageNum.value = parseInt(route.params.id);
  122. //1.获得路由id end ---------------------------------------->
  123. //2.页面数据 start ---------------------------------------->
  124. //2.2新闻列表
  125. const newsList = ref([]);
  126. let newslists = async () => {
  127. const listData = await requestDataPromise('/web/getWebsiteArticleList', {
  128. method: 'GET',
  129. query: {
  130. 'page': pageNum.value,
  131. 'pageSize': pageSize.value,
  132. 'catid': articleId
  133. },
  134. });
  135. if (listData.code == 200) {
  136. console.log('aaaaaaa', listData.data.rows);
  137. newsList.value = listData.data.rows;
  138. total.value = listData.data.count;
  139. } else {
  140. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  141. // console.log("错误位置:获取新闻列表")
  142. // console.log("后端错误反馈:", listData.message)
  143. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  144. }
  145. }
  146. //获得列表
  147. newslists();
  148. //分页事件
  149. let changePage = (value) => {
  150. console.log("当前页码", value);
  151. navigateTo(`/${targetSegment}/list-${value}.html`)
  152. }
  153. //2.3获得页面名称
  154. let getPageName = async () => {
  155. const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
  156. method: 'GET',
  157. query: {
  158. 'catid': articleId
  159. },
  160. });
  161. if (pageName.code == 200) {
  162. name.value = pageName.data.alias
  163. } else {
  164. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  165. // console.log("错误位置:设置页面标题")
  166. // console.log("后端错误反馈:", pageName.message)
  167. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  168. }
  169. }
  170. //获得列表
  171. getPageName();
  172. //2.页面数据 end ---------------------------------------->
  173. //3.二级栏目 start ---------------------------------------->
  174. //3.1通过id获取父栏目
  175. const parent_name = ref([]);
  176. const parent_id = ref([]);
  177. const parent_pinyin = ref("");
  178. let getParentNav = async () => {
  179. const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
  180. method: 'GET',
  181. query: {
  182. 'catid': articleId
  183. },
  184. });
  185. if (listData.code == 200) {
  186. console.log(111999)
  187. console.log(listData.data);
  188. parent_name.value = listData.data.parent_name;
  189. parent_id.value = listData.data.parent_id;
  190. parent_pinyin.value = listData.data.parent_pinyin;
  191. } else {
  192. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  193. // console.log("错误位置:获取新闻列表")
  194. // console.log("后端错误反馈:", listData.message)
  195. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  196. }
  197. getSecondNav();
  198. }
  199. //获得列表
  200. getParentNav();
  201. // 3.2获取二级栏目
  202. const secondNav = ref([]);
  203. let getSecondNav = async () => {
  204. const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
  205. method: 'GET',
  206. query: {
  207. 'placeid': 1,
  208. 'pid': parent_id.value,
  209. 'num': 8,
  210. },
  211. });
  212. console.log('listData', listData);
  213. if (listData.code == 200) {
  214. secondNav.value = listData.data
  215. } else {
  216. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  217. console.log("错误位置:获取新闻列表")
  218. console.log("后端错误反馈:", listData.message)
  219. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  220. }
  221. }
  222. //3.二级栏目 end ---------------------------------------->
  223. //4.设置seo信息 start---------------------------------------->
  224. //4.1 设置seo信息
  225. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  226. method: 'GET',
  227. query: {
  228. 'catid': articleId
  229. },
  230. });
  231. if (setData.code == 200) {
  232. let seoTitle = setData.data.seo_title;
  233. let seoDescription = setData.data.seo_description;
  234. let seoKeywords = setData.data.seo_keywords;
  235. let seoSuffix = setData.data.suffix;
  236. let seoName = setData.data.website_name;
  237. useSeoMeta({
  238. title: seoTitle + "_" + seoName + "_" + seoSuffix,
  239. meta: [
  240. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  241. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  242. ]
  243. });
  244. } else {
  245. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  246. // console.log("错误位置:设置列表页面SEO数据")
  247. // console.log("后端错误反馈:", setData.message)
  248. // console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  249. }
  250. //4.设置seo信息 end---------------------------------------->
  251. //5.广告 start---------------------------------------->
  252. let adImg1 = ref({});
  253. let adImg2 = ref({});
  254. onMounted(async () => {
  255. //从客户端获取行政职能部门 加快打开速度
  256. const { $webUrl, $CwebUrl } = useNuxtApp();
  257. //广告1
  258. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0001`
  259. const responseAd1 = await fetch(url, {
  260. headers: {
  261. 'Content-Type': 'application/json',
  262. 'Userurl': $CwebUrl,
  263. 'Origin': $CwebUrl
  264. }
  265. });
  266. const resultAd1 = await responseAd1.json();
  267. adImg1.value = resultAd1.data[0];
  268. //广告2
  269. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0002`
  270. const responseAd2 = await fetch(url2, {
  271. headers: {
  272. 'Content-Type': 'application/json',
  273. 'Userurl': $CwebUrl,
  274. 'Origin': $CwebUrl
  275. }
  276. });
  277. const resultAd2 = await responseAd2.json();
  278. adImg2.value = resultAd2.data[0];
  279. })
  280. //5.广告 end---------------------------------------->
  281. </script>
  282. <style lang="less" scoped>
  283. @import url('@/assets/css/list.less');
  284. </style>